package com.ppch.wuwamanus.tools;

import cn.hutool.core.io.FileUtil;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;


/**
 * Package:ppch-ai-agent
 * ClassName:FileOperationTool
 *
 * @Author 泡泡茶壶
 * @Create 2025/7/18 11:16
 * @Version 1.0
 * Description:
 *  文件的保存与读取
 */
public class FileOperationTool {

    /**
     * 从指定路径读取指定文件内容
     * @param filePathAndName 要读取文件的文件路径及其文件名称
     */
    @Tool(description = "从指定路径读取指定文件内容")
    public String readFile(@ToolParam(description = "要读取文件的文件路径及其文件名称") String filePathAndName){
        try {
            return FileUtil.readUtf8String(filePathAndName);
        } catch (Exception e) {
            return "读取文件异常：" + e.getMessage();
        }
    }

    /**
     * 创建新的文件并写入内容
     * @param filePathAndName 文件路径及其文件名称
     * @param content 内容
     */
    @Tool(description = "写入或保存内容到指定文件中")
    public String writeFile(@ToolParam(description = "要写入或保存文件的文件路径及其文件名称") String filePathAndName,
                            @ToolParam(description = "要写入或保存的内容") String content){
        try {
            FileUtil.writeUtf8String(content, filePathAndName);
            return "成功写入内容到指定文件中："+filePathAndName;
        } catch (Exception e) {
            return "写入异常：" + e.getMessage();
        }
    }

    /**
     * 给已有的文件追加内容
     * @param filePathAndName 文件路径及其文件名称
     * @param content 追加内容
     */
    @Tool(description = "追加内容到指定文件中")
    public String appendContentToFile(@ToolParam(description = "要追加内容的文件路径及其文件名称") String filePathAndName,
                            @ToolParam(description = "要追加的内容") String content){
        try {
            FileUtil.appendUtf8String(content, filePathAndName);
            return "成功追加内容到指定文件中："+filePathAndName;
        } catch (Exception e) {
            return "追加内容异常：" + e.getMessage();
        }
    }
}
